package com.brsya.base.net;

import com.brsya.base.base.Contents;
import com.brsya.base.bean.BaseListBean;
import com.brsya.base.bean.BaseObjectBean;
import com.brsya.base.bean.CategoryBean;
import com.brsya.base.bean.DomainBean;
import com.brsya.base.bean.HomeTabBean;
import com.brsya.base.bean.InventoryBean;
import com.brsya.base.bean.InventoryDetailBean;
import com.brsya.base.bean.MovieBean;
import com.brsya.base.bean.MovieListBean;
import com.brsya.base.bean.PlayAddressBean;
import com.brsya.base.bean.PlayListBean;
import com.brsya.base.bean.RankingListBean;
import com.brsya.base.bean.SearchMovieBean;
import com.brsya.base.bean.UpdateBean;

import java.util.Map;

import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.QueryMap;
import retrofit2.http.Streaming;
import retrofit2.http.Url;

/**
 * 网络请求 API接口
 */
public interface APIService {


    // POST请求
    //    @FormUrlEncoded
    //    @POST("app/appLogin")
    //    Observable<BaseObjectBean<UserBean>> login(@FieldMap Map<String, Object> par);

    // POST上传
    //    @Multipart
    //    @POST("app/upload")
    //    Observable<BaseObjectBean<String>> updateAvatar(@Part MultipartBody.Part file, @Query("userId") String userId);

    // GET下载
    //    @Streaming
    //    @GET
    //    Observable<ResponseBody> downloadFile(@Url() String url);
    //

    /**
     * 下载文件
     *
     * @param url 下载url
     */
    @Streaming
    @GET
    Observable<ResponseBody> download(@Url String url);
    //
    //    // 广告开关
    //    @Streaming
    //    @GET("adState/getValue")
    //    Observable<BaseListBean<AdStatusBean>> adState(@QueryMap Map<String, Object> par);
    //
    //    // 搜索框接口
    //    @Streaming
    //    @GET("search/getUrl")
    //    Observable<BaseObjectBean<String>> search(@QueryMap Map<String, Object> par);
    //
    //    // 首页导航列表
    //    @Streaming
    //    @GET("link/home")
    //    Observable<BaseListBean<HomeListBean>> homeList(@QueryMap Map<String, Object> par);
    //
    //    // 导航页面接口
    //    @Streaming
    //    @GET("link/list")
    //    Observable<BaseListBean<NavigationBean>> navigationList(@QueryMap Map<String, Object> par);
    //
    //    // 获取热门
    //    @Streaming
    //    @GET("/videos/getHot")
    //    Observable<BaseListBean<MovieBean>> getHot(@QueryMap Map<String, Object> par);
    //
    //    // 今日推荐电影
    //    @Streaming
    //    @GET("/videos/getDayTop")
    //    Observable<BaseListBean<MovieBean>> getDayHot(@QueryMap Map<String, Object> par);
    //
    //    // 根据ID获取电影
    //    @Streaming
    //    @GET("/videos/getVideosInfoByid")
    //    Observable<BaseObjectBean<PlayListBean>> getVideoById(@QueryMap Map<String, Object> par);
    //
    //    // 获取播放地址
    //    @Streaming
    //    @GET("/videos/getPlayerUrl")
    //    Observable<BaseObjectBean<String>> getPlayAddress(@QueryMap Map<String, Object> par);

    // 获取播放地址   使用全路径
    //    @Get , @Post 全路径
    //    @Streaming
    //    @GET("/videos/getPlayerUrl")
    //    Observable<BaseObjectBean<String>> getPlayAddress(@QueryMap Map<String, Object> par);


    // 动态域名
    @Streaming
    @GET("/dynamic/ip")
    Observable<BaseObjectBean<DomainBean>> getUrlTop(@QueryMap Map<String, Object> par);

    // 获取首页TAB
    @Streaming
    @GET
    Observable<BaseObjectBean<HomeTabBean>> getHomeTab(@Url String url, @QueryMap Map<String, Object> par);

    // 获取影视列表
    @Streaming
    @GET
    Observable<BaseObjectBean<MovieListBean>> getMovieList(@Url String url, @QueryMap Map<String, Object> par);

    // 影视列表换一换
    @Streaming
    @GET
    Observable<BaseListBean<MovieListBean.ContentListDTO.VideoListDTO>> getNewMovieList(@Url String url, @QueryMap Map<String, Object> par);

    // 按条件搜索电影
    @Streaming
    @GET
    Observable<BaseListBean<MovieBean>> getMovieListByCondition(@Url String url,@QueryMap Map<String, Object> par);

    // 获取全部分类
    @Streaming
    @GET
    Observable<BaseListBean<CategoryBean>> getCategory(@Url String url,@QueryMap Map<String, Object> par);

    // 帮助反馈
    @Streaming
    @GET
    Observable<BaseObjectBean<String>> helpSubmit(@Url String url,@QueryMap Map<String, Object> par);

    // 按条件搜索电影
    @Streaming
    @GET
    Observable<BaseListBean<RankingListBean>> getRankingList(@Url String url, @QueryMap Map<String, Object> par);

    // 片单列表
    @Streaming
    @GET
    Observable<BaseListBean<InventoryBean>> getInventory(@Url String url, @QueryMap Map<String, Object> par);

    // 片单详情
    @Streaming
    @GET
    Observable<BaseListBean<InventoryDetailBean>> getInventoryList(@Url String url, @QueryMap Map<String, Object> par);

    // 版本更新
    @Streaming
    @GET
    Observable<BaseObjectBean<UpdateBean>> update(@Url String url, @QueryMap Map<String, Object> par);


    // 根据ID获取电影
    @Streaming
    @GET
    Observable<BaseObjectBean<PlayListBean>> getVideoById(@Url String url, @QueryMap Map<String, Object> par);

    // 获取播放地址
    @Streaming
    @GET
    Observable<BaseObjectBean<String>> getPlayAddress(@Url String url, @QueryMap Map<String, Object> par);

    // 今日推荐电影
    @Streaming
    @GET
    Observable<BaseListBean<MovieBean>> getLike(@Url String url, @QueryMap Map<String, Object> par);

    // 获取第三方接口
    @Streaming
    @GET
    Observable<BaseObjectBean<PlayAddressBean>> getPlayAddressNew(@Url String url, @QueryMap Map<String, Object> par);


    // 直搜结果
    @Streaming
    @GET
    Observable<BaseListBean<SearchMovieBean>> getMovieListByName(@Url String url, @QueryMap Map<String, Object> par);
}
